#nullable enable

namespace Application.Service;

/// <summary>
/// 系统信息服务接口
/// <para>功能：提供系统实时监控信息的Web API接口</para>
/// <list type="bullet">
/// <item><description>监控CPU、内存、网络、磁盘等系统资源</description></item>
/// <item><description>提供系统实时性能数据</description></item>
/// <item><description>封装系统监控功能为Web服务</description></item>
/// </list>
/// </summary>
public interface ISystemService
{
    /// <summary>
    /// 获取系统实时信息
    /// </summary>
    /// <returns>返回包含CPU、内存、网络、磁盘等信息的完整系统状态</returns>
    SystemRealTimeInfo GetRealInfo();

    /// <summary>
    /// 监控系统CPU的实时使用情况
    /// </summary>
    /// <returns>返回当前CPU使用率的百分比值</returns>
    float GetCpuUsage();

    /// <summary>
    /// 监控系统内存的实时使用情况
    /// </summary>
    /// <returns>返回当前内存使用率的百分比值</returns>
    float GetMemoryUsage();

    /// <summary>
    /// 监控系统网络接口的实时传输速度
    /// </summary>
    /// <returns>返回当前网络上传和下载速度的实时元组数据，单位：字节/秒</returns>
    (long uploadSpeed, long downloadSpeed) GetNetworkSpeed();

    /// <summary>
    /// 监控系统硬盘的存储空间使用情况
    /// </summary>
    /// <returns>包含硬盘总容量、剩余容量和使用率的元组，单位：字节</returns>
    (long totalSize, long freeSpace, float usageRate) GetDiskInfo();
}